{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "72f7acc0-28ed-4194-8ada-c72c60e993d1",
   "metadata": {},
   "source": [
    "Chapter 17\n",
    "\n",
    "# 牛顿法\n",
    "Book_3《数学要素》 | 鸢尾花书：从加减乘除到机器学习 (第二版)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ace5b36a-03d3-462d-80b2-72dfb42e9125",
   "metadata": {},
   "source": [
    "这段代码实现了**牛顿法**求解函数的根，并通过可视化展示了牛顿法的迭代过程和收敛性。以下从数学角度详细描述每部分的功能及其背后的数学原理。\n",
    "\n",
    "---\n",
    "\n",
    "### 代码描述及数学分析\n",
    "\n",
    "#### 1. **绘图参数设置**\n",
    "代码使用 `matplotlib` 设置绘图参数，以增强可视化效果，例如字体样式、坐标轴网格和刻度。\n",
    "\n",
    "#### 2. **目标函数与导数定义**\n",
    "目标函数被定义为：\n",
    "$$\n",
    "f(x) = 2x^2 - 8x + 1\n",
    "$$\n",
    "该函数是一个二次多项式，其根可以通过求解 $f(x) = 0$ 得到。\n",
    "\n",
    "导数被计算为：\n",
    "$$\n",
    "f'(x) = \\frac{d}{dx}[2x^2 - 8x + 1] = 4x - 8\n",
    "$$\n",
    "使用 `sympy` 的 `diff` 函数自动计算导数，确保数学表达式的准确性。然后通过 `lambdify` 将符号函数转换为可执行的 Python 函数，以便在数值计算中使用。\n",
    "\n",
    "#### 3. **牛顿法求根**\n",
    "牛顿法是一个迭代方法，用于求解非线性方程 $f(x) = 0$ 的根。其数学思想基于泰勒展开和线性近似。给定当前点 $x_k$，通过切线逼近找到下一次迭代点 $x_{k+1}$：\n",
    "$$\n",
    "x_{k+1} = x_k - \\frac{f(x_k)}{f'(x_k)}\n",
    "$$\n",
    "这个公式是牛顿法的核心公式。\n",
    "\n",
    "牛顿法的迭代条件：\n",
    "1. 如果 $f'(x_k) \\approx 0$，方法可能失效，因为分母趋近于零。\n",
    "2. 当 $|x_{k+1} - x_k| < \\text{tol}$，即两次迭代的差小于指定容差 $tol$，算法收敛。\n",
    "\n",
    "#### 4. **迭代过程与收敛性分析**\n",
    "代码实现了牛顿法的完整迭代过程，并记录每次迭代的 $x_k$ 值，以便可视化。\n",
    "\n",
    "迭代过程的收敛性依赖于初始点 $x_0$ 和函数的性质：\n",
    "- 当初始点接近根时，牛顿法通常以二次收敛速度收敛，即误差 $|x_k - r|$ 满足：\n",
    "  $$\n",
    "  |x_{k+1} - r| \\approx C|x_k - r|^2\n",
    "  $$\n",
    "  其中 $r$ 是函数的根，$C$ 是一个常数。\n",
    "- 若初始点选择不当或导数在某点接近零，可能导致算法发散或无法收敛。\n",
    "\n",
    "#### 5. **牛顿法可视化**\n",
    "代码通过 `visualize_newton` 函数展示了牛顿法的几何直观过程：\n",
    "1. 绘制函数曲线 $f(x)$ 和横轴 $y=0$，以展示根的位置。\n",
    "2. 使用切线显示每次迭代的更新过程：\n",
    "   - 点 $x_k$ 到切线与横轴交点的移动。\n",
    "   - 垂直线从 $f(x_k)$ 投影到横轴。\n",
    "3. 用红色标记每次迭代的点 $x_k$ 和对应的函数值 $f(x_k)$。\n",
    "\n",
    "#### 6. **收敛性可视化**\n",
    "代码通过 `visualize_convergence` 函数展示了 $x_k$ 随迭代次数的变化图：\n",
    "- 横轴为迭代次数 $k$；\n",
    "- 纵轴为迭代点 $x_k$；\n",
    "- 图形直观显示了牛顿法的收敛轨迹。\n",
    "\n",
    "#### 7. **测试部分**\n",
    "初始点选择为 $x_0 = -2.0$，进行牛顿法迭代：\n",
    "- 检查 $f'(x)$ 是否接近零，避免除零错误；\n",
    "- 记录每次迭代的 $x_k$ 值，并返回近似根、迭代次数和所有迭代值。\n",
    "\n",
    "---\n",
    "\n",
    "### 数学背景总结\n",
    "1. **牛顿法适用范围**：\n",
    "   - 函数 $f(x)$ 必须在根附近可微且导数非零。\n",
    "   - 牛顿法适用于初始点接近真实根的情况，否则可能发散或收敛到非目标根。\n",
    "\n",
    "2. **收敛性**：\n",
    "   牛顿法具有二次收敛速度，即误差的平方比例下降。这是其相较于其他数值方法（如二分法）的显著优势。\n",
    "\n",
    "3. **几何解释**：\n",
    "   牛顿法的迭代过程可以视为每次使用当前点的切线逼近函数的零点，从而逐步逼近真实根。\n",
    "\n",
    "通过上述代码的实现，可以直观理解牛顿法的原理、优势及局限性，同时通过可视化加深对其迭代过程的理解。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "36187552-4529-405b-bfd0-519568348b79",
   "metadata": {},
   "source": [
    "## 导入包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "acca807b-d1e5-4303-8517-9bd47ae6c631",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sympy import symbols, diff, lambdify"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c1a97c28-c489-4329-b464-8a6da15e8a3b",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = plt.rcParams  # 获取默认绘图参数\n",
    "p[\"font.sans-serif\"] = [\"Roboto\"]  # 设置无衬线字体为 Roboto\n",
    "p[\"font.weight\"] = \"light\"  # 设置字体粗细为 light\n",
    "p[\"ytick.minor.visible\"] = True  # 显示 y 轴的小刻度\n",
    "p[\"xtick.minor.visible\"] = True  # 显示 x 轴的小刻度\n",
    "p[\"axes.grid\"] = True  # 启用坐标轴网格\n",
    "p[\"grid.color\"] = \"0.5\"  # 设置网格颜色为灰色\n",
    "p[\"grid.linewidth\"] = 0.5  # 设置网格线宽度"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "08c7e52b-d889-4c51-9307-9d89218a10d9",
   "metadata": {},
   "source": [
    "## 使用 sympy 定义目标函数和导数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7fafc291-c81f-45ec-ba1e-5dc7ab82dbaa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 x^{2} - 8 x + 1$"
      ],
      "text/plain": [
       "2*x**2 - 8*x + 1"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = symbols('x')\n",
    "func = 2*x**2 - 8*x + 1\n",
    "func"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "695d6254-08a7-4d4a-b09d-e28c82a71e2e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4 x - 8$"
      ],
      "text/plain": [
       "4*x - 8"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "func_prime = diff(func, x)\n",
    "func_prime"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7c61b8f3-af8a-4a0e-9c29-9823591be630",
   "metadata": {},
   "source": [
    "## 将函数和导数转换为可执行的 Python 函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "40236709-fb17-4d25-9e76-30381aa16d2d",
   "metadata": {},
   "outputs": [],
   "source": [
    "f = lambdify(x, func, 'numpy')\n",
    "f_prime = lambdify(x, func_prime, 'numpy')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4ac4a659-8236-4c2c-b138-5b051dbefaf2",
   "metadata": {},
   "source": [
    "## 牛顿法求根函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "288877b1-286d-43ac-85aa-8bc887343b36",
   "metadata": {},
   "outputs": [],
   "source": [
    "def newton_method(f, f_prime, x0, tol=1e-6, max_iter=100):\n",
    "    x_vals = [x0]  # 记录迭代值以便可视化\n",
    "    for i in range(max_iter):\n",
    "        fx = f(x0)\n",
    "        fpx = f_prime(x0)\n",
    "        if abs(fpx) < 1e-10:  # 避免除零\n",
    "            raise ValueError(\"导数接近零，牛顿法可能无法收敛。\")\n",
    "\n",
    "        x1 = x0 - fx / fpx  # 牛顿迭代公式\n",
    "        x_vals.append(x1)\n",
    "\n",
    "        if abs(x1 - x0) < tol:  # 收敛条件\n",
    "            return x1, i + 1, x_vals\n",
    "\n",
    "        x0 = x1\n",
    "\n",
    "    raise ValueError(\"迭代未能在最大步数内收敛。\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c6e8e303-7c4d-4a9f-9416-72a1cb79412d",
   "metadata": {},
   "source": [
    "## 可视化牛顿法过程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "627c648f-11ed-42e4-b3ab-4df1dc5d7fde",
   "metadata": {},
   "outputs": [],
   "source": [
    "def visualize_newton(f, x_vals):\n",
    "    x = np.linspace(-3, 3, 500)\n",
    "    y = f(x)\n",
    "\n",
    "    plt.figure(figsize=(6, 6))\n",
    "    plt.plot(x, y, color=\"blue\")\n",
    "    plt.axhline(0, color=\"black\", linewidth=0.8, linestyle=\"--\")\n",
    "\n",
    "    # 绘制牛顿法迭代过程\n",
    "    for i in range(len(x_vals) - 1):\n",
    "        x0 = x_vals[i]\n",
    "        x1 = x_vals[i + 1]\n",
    "        plt.scatter(x0, f(x0), color=\"red\", marker = 'x')\n",
    "        plt.scatter(x0, 0, color=\"red\", marker = 'x')\n",
    "        plt.plot([x0, x0], [0, f(x0)], lw = 0.2, color=\"k\", linestyle=\"-\")  # 垂直线\n",
    "        plt.plot([x0, x1], [f(x0), 0], lw = 0.2, color=\"k\", linestyle=\"-\")  # 切线\n",
    "\n",
    "    plt.title(\"Newton's Method Visualization\")\n",
    "    plt.xlabel(\"x\")\n",
    "    plt.ylabel(\"f(x)\")\n",
    "    plt.xlim(-3,3)\n",
    "    # plt.legend()\n",
    "    plt.grid(True)\n",
    "    # plt.savefig('数值求根_牛顿法.svg')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a9c5929b-f0bb-409a-96d0-e615abe61482",
   "metadata": {},
   "outputs": [],
   "source": [
    "def visualize_convergence(x_vals):\n",
    "\n",
    "    plt.figure(figsize=(6, 3))\n",
    "    plt.plot(np.arange(len(x_vals)),x_vals, marker = 'x')\n",
    "    plt.xlim(0,len(x_vals) - 1)\n",
    "    plt.xlabel('Iteration')\n",
    "    plt.ylabel('Approximated root')\n",
    "    # plt.savefig('数值求根_牛顿法_收敛.svg')\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "631dc5ff-c3fa-4b07-9c1f-b580ca990e28",
   "metadata": {},
   "source": [
    "## 测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "2b8a00b4-7e11-4665-a6ff-d5633444fd30",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "求得根的近似值: 0.1291713066129993\n",
      "迭代次数: 5\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAIhCAYAAAASOPPGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABeN0lEQVR4nO3dd3gU5d7G8e+mFwi9k4B0QxUNCMIhoIAHFFFBDki3G7B7EBURURH0VSwRURAECQLKUYFjoXcwoiASEASkShNJaAkpz/vHnASWBEjZZDa79+e69srs7O7Mb2dX92bmKQ5jjEFERETEBXzsLkBEREQ8h4KFiIiIuIyChYiIiLiMgoWIiIi4jIKFiIiIuIyChYiIiLiMgoWIiIi4jIKFiIiIuIyChYiIiLiMgoUUWwMHDsTPz48ffvghx8cdDgcvvvhi0RblYtHR0YwdOzbfrx84cCAOh4OHH374ks85fvw4QUFBOBwONm7cmO99ZapZsyYDBw4s8HYuJTo6mujo6BwfGzduHA6Hg/Xr1+f4+PTp03E4HHz++eckJydTtWpVxo8fX2i1Xsoff/yBw+Fg6tSpAOzdu5fy5cvzxRdfFPq+165dS7ly5S55jEQKSsFCirX09HQGDRpESkqKbTUUdoAJCgoq8DZmzJjBmTNncnxs2rRp+T5+l/uRt0Pfvn3x8fFh5syZOT7+2WefUbp0aW699VaCgoJYtmwZ9913XxFXmV1ERAQrVqzg1ltvdel2ly1bhsPhYNmyZVnrWrRowYoVK7juuutcui+RTAoWUqz5+fmRkJDASy+9ZHcphSYsLKxAr69QoQJJSUnMmjUrx8cnTZpE5cqVC7QPd1G1alU6dOjAnDlzyMjIcHrs+PHjLFy4kLvuuovAwEAA6tWrR2hoqB2lZhMZGUlAQECh78fX15eGDRvi6+tb6PsS76RgIcVatWrV6N+/P+PGjeOnn3664vPj4uJo0qQJQUFB1KtXjw8//DDrsTZt2nDzzTc7Pb9Vq1a0b9/eaV10dDTt27fPuswAMGrUKBwOB3/88QcAxhjefvtt6tevT1BQEHXq1GHcuHFcOOffwIEDadasGTNmzKBBgwaEhIRw7bXXsnr1aqf9XRgsMrcZEhJC3bp1GTt2bLYf0ItVqVKF9u3bO73XTKtXr2bLli3cfffd2R5LS0tj5MiRREREEBQUxPXXX8/KlSsBmDp1Kg6Hg+XLl7N8+XKn0/qZr3322WepUqUKYWFh3HLLLRw4cMBp+z/88AMdO3akZMmSlClThj59+rB//36n5xw4cIDu3bsTEhJCxYoVefzxxzl37txl32+/fv04ePAgK1ascFr/+eefk5qaSv/+/bPWXXy2afv27XTv3p1y5cpRtmxZunTpwubNm7Mef/HFF7M+80wXX9YAWLFiBZ06dSIsLIxSpUrRvn37y156uHgbmfvJ6Zb5HTt27BgxMTGEh4dnfZ/ffPPNrG3WrFkz67vbvn17atasCeR8FuPkyZM88sgjVK1alaCgIK677jrmz5/vVGPNmjUZMmTIFT9XEYxIMTVgwABTo0YNc/z4cVO5cmXTpEkTc+7cuazHATNy5Mis+++//75xOBzmkUceMf/973/N008/bRwOh/nkk0+MMca8/PLLJjQ0NGsbhw8fNj4+PsbX19f89ddfxhhjkpOTTVBQkBk7dqzZvn27WblypQHMoEGDzMqVK01ycrIxxpjHHnvM+Pr6mmeffdYsWLDAPPPMM8bHx8cMHTrUqf6AgADTsGFDM2fOHDN37lxz9dVXm2rVqpmUlJRs7/e9994zPj4+5uWXXzbff/+9ef75543D4TAvvfTSZY9RvXr1zGeffWYA88svv2R7/KqrrjJfffWVAczPP/+c9dhdd91lSpQoYd58800zf/58061bNxMUFGS2bdtmDh8+bFauXGmaNWtmmjVrZlauXGkOHz5sjDGmRo0axs/Pz3Tr1s1888035qOPPjIlS5Y0PXv2zNr2+vXrTWBgoLnxxhvN3LlzzZQpU0xERETW52mMMRkZGebaa681ZcuWNRMmTDDffPON6dWrlwFMu3btLvmeT506ZUJDQ80DDzzgtL59+/amVq1aTusu/I6cPXvWhIeHm+uuu858+eWX5osvvjBNmjQxFStWNMeOHTPGGDNy5Ehz8f82d+/ebQAzZcoUY4wxP/30k/Hz8zM9e/Y0CxYsMPPnzzedO3c2ZcqUMUeOHMnxNRff37Nnj1m5cmXWbd68eSYkJMS0aNHCpKamGmOMufbaa81VV11lPvnkE7No0SIzevRo4+vraz766CNjjDHx8fHmnXfeMYB55513THx8vDHGmKVLlxrALF261BhjzLlz50xUVJQpV66cef/9981XX31l7rzzTuNwOMycOXOy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YcMG4Py/4i/sCXHkyBGn7aSnpxMYGOg0/siFPUty65FHHuH3339n5syZ2brEZh63C3sMnTlzhl27djk9L/Nsz+U+o5tuuinr2F9oxowZhIeHU69evTzXLt5NZyzE48TGxrJs2TKnH6CKFSvyzDPPMHr0aE6cOEGnTp04efIkb7zxBqGhoVn/4i9TpgwtW7ZkzZo1vPLKK1mv7969O4MHD6Zdu3bZxpWIiIjg66+/5tprr6V9+/bUq1ePBx98kBdeeIGzZ8/SqlUr1qxZw2uvvcbDDz9MnTp18vW+brjhBl577TWCg4OJiopi586dTJ8+nc6dO+d6G927d6dSpUosX76cV1999ZL/Au/WrRvR0dHcfvvtPPfcczRp0oRdu3YxcuRIHnroIV544YWs9/75558za9YsmjdvTt26dXNVx9ixY+nQoQNdunThoYceIikpiVGjRlG5cmUef/xxwDp7FBUVxYABA3jllVeIiIhg8uTJbNmyJVt7gJw0btyYpk2bsmbNGu68807KlClz2edHR0czZMgQ7rjjDp544gmCg4P5+OOP8fPzo0OHDgB06NABPz8/Hn74YWJiYjh48GC2ENutWzfGjx/P4MGDufvuu9m0aVPWc06ePJmr4zNnzhwmT55M3759OXPmDKtWrcp6rF69elx99dXUq1eP5557Dh8fHzIyMnjttdfYt28fFSpUyHpu5hmzyZMnk5ycTNeuXbPtq3///kyYMIHu3bvz0ksvUa1aNWbMmMHSpUv57LPP8ny2SES9QqTYurBXyMXi4uKy9dYwxpgJEyaYyMhI4+/vbypWrGjuvfdec/ToUafnjB492gQEBJikpKSsdUePHjW+vr5mzJgx2fY1e/ZsU6lSJVO6dGmzfft2Y4zVan/MmDHmqquuMgEBAaZOnTrm9ddfN+np6ZetP6dW/JlSU1PN6NGjTe3atU1AQICpXr26GTJkiElMTLzsMSpVqpTTumeeecb4+fmZP//8M2tdZs+AC7ubnj592jz55JOmWrVqxt/f39SuXdu8/PLLTj05tmzZYho2bGhCQkKyuu3WqFHDDBgwwGmfOfWmWLFihWnbtq0JCgoyZcuWNX369DH79+93es6BAwdMt27dTHBwsClXrpwZOnSo6dat2xV7hWR64403svX0uNDF35GNGzeam2++2YSFhZkSJUqYVq1amW+++cbp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adOmjd2lFAuJiYnMnTuXQYMG2V1KsfLpp5/St29fu8twS/v372fnzp20a9fOab2OWe7pWOVdZk8kOycyK842bNjAgQMHctWr0qMvheR0Pahjx45qhJhLxhimTJlC//797S5FPEjFihU5duyY3WWIl5k0aRIDBgywu4xiIT09PdsZxGuvvZa//vorV6/36GDxzTffcPjw4WzrdRosd6ZOnUqfPn1yPG0tkl8BAQEkJSU5rcvIyMh1wzCRvPr6669p3769GqDn0pYtW3LsOZPb306PDhYdOnQgLi7Oad3Ro0cJCQmxqaLiY+nSpURGRlKxYkW7SxEP5O/vz8mTJ7Puz58/X4MWSaH45Zdf8PPzo0GDBnaXUmw0btyYxYsXO521SE5OJj09PVev9/g2Ftu2bePbb78lKCgIf39//Pz86N+/v7puXcbff//N/fffT+fOnZ3WV65cWT1qcknXwC8vNTWVDz74gKCgIFJTU6lWrRq33Xab3WUVG/p+5Y4xhjvuuIOuXbs6rQ8NDaV37942VVU8HDx4kFmzZhEUFERgYCBpaWkMGDAgV2ctPD5YiIiISNHx6EshIiIiUrQULERERMRlFCxERETEZRQsRERExGUULERERMRlFCxERETEZRQsRERExGUULERERMRlFCxERETEZRQsRERExGUULERERMRlFCxEpEjNmjWL4OBg9u7dC8DKlSvx9fXlxx9/tLkyEXEFTUImIkXupptuonLlykybNo2oqChatGjBhAkT7C5LRFzAz+4CRMT7xMbG0rRpU8qUKcO+fftYtGiR3SWJiIsoWIhIkatfvz5PPPEEY8aMYfLkyZQpU8bukkTERdTGQkRsceLECQASExPtLUREXErBQkSK3I8//sjkyZN54403GDlyJAcPHrS7JBFxETXeFJEilZGRQcuWLWnRogWxsbHcfPPNlCpVilmzZtldmoi4gNpYiEiR+uCDD9ixYwfffPMNAG+88QbNmjVj4cKFdOzY0ebqRKSgdMZCREREXEZtLERERMRlFCxERETEZRQsRERExGUULERERMRlFCxERETEZRQsRERExGUULERERMRlFCxERETEZRQsRERExGUULERERMRlFCxERETEZf4fbtU/s34fRkgAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "try:\n",
    "    root, iterations, x_vals = newton_method(f, f_prime, x0=-2.0)\n",
    "    print(f\"求得根的近似值: {root}\")\n",
    "    print(f\"迭代次数: {iterations}\")\n",
    "\n",
    "    # 可视化\n",
    "    visualize_newton(f, x_vals)\n",
    "    visualize_convergence(x_vals)\n",
    "\n",
    "except ValueError as e:\n",
    "    print(e)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
